home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Installer SDK Cornucopia 1.0.2 / Script Examples / Folder Merge [infm] Example / myFolderMrg.r < prev    next >
Encoding:
Text File  |  1996-09-30  |  7.6 KB  |  262 lines  |  [TEXT/MPS ]

  1. //
  2. //    myFolderMrg.r
  3. //
  4. //        This installer script source demonstrates use of 
  5. //        the 'folder' or 'folder merge' atom ( 'infm' ).
  6. //        
  7. //        The advantage to using a folder merge atom within
  8. //        your installer script is that once the script has
  9. //        been completed, the actual contents of the folder
  10. //        described by the folder merge atom can change, and
  11. //        no changes are needed in the Installer source script.
  12. //        Whatever files are contained in the folder will
  13. //        automatically be included. You must however run
  14. //        ScriptCheck on the source script so that the Installer
  15. //        will know the actual size of the folder to be installed.
  16. //        NOTE: If a source folder refered to by an 'infm' is empty,
  17. //        it will not be copied to the target volume.
  18. //
  19. //        Use of the "folder-user:" path is supported allowing users
  20. //        to select the target path for the files contained in the
  21. //        folder.
  22. //
  23. //        Use of the "special-xxxx" paths for installing files to
  24. //        the user's system folder is not currently supported.
  25. //
  26. //        Use of InstaCompOne compression is not currently supported
  27. //        for use with folder merge atoms.
  28. //
  29. //        This example also demonstrates another method to install custom icons.
  30. //        (See the "Custom UI Example" for a non-folder merge example.)
  31. //        The folder called "folder 3" has a custom folder icon.  This icon will
  32. //        be installed into the target folder as part of the "Folder Merge with
  33. //        Custom Icon" package.
  34. //        NOTE: As of Installer 4.0.3 the feature allowing the scriptwriter
  35. //        to implement installation of a Custom Icon is broken. The 4.0.3 
  36. //        Installer fails to set the "use Custom Icon" bit in the
  37. //        Finder Attributes flag of the target folder. This bug is fixed in
  38. //        Installer 4.0.6.  An example of installing a custom icon file is included
  39. //        so that when Installer 4.0.6 is released, those who would like to
  40. //        install custom icons will have the necessary information. An 'after'
  41. //        Action Atom can be used to work around this bug for Installer 4.0.3.
  42. //        Contact DTS (email: devsupport@apple.com) for more information.
  43. //
  44. //        Copyright 1993-1996, Apple Computer, Inc., All Rights Reserved
  45. //
  46.  
  47. #include "InstallerTypes.r"
  48.  
  49.  
  50. // • packages
  51.  
  52. resource 'inpk' (100) {
  53.     format0 {
  54.         showsOnCustom,
  55.         removable,
  56.         dontForceRestart,
  57.         0,
  58.         0,
  59.         "Folder Merge to \"FolderMerge Example:\" folder",
  60.         {    
  61.         'infm', 1000;
  62.         },
  63.     }
  64. };
  65.  
  66. resource 'inpk' (200) {
  67.     format0 {
  68.         showsOnCustom,
  69.         removable,
  70.         dontForceRestart,
  71.         0,
  72.         0,
  73.         "Folder Merge to User Selected folder",
  74.         {    
  75.         'infm', 2000;
  76.         },
  77.     }
  78. };
  79.  
  80. resource 'inpk' (300) {
  81.     format0 {
  82.         showsOnCustom,
  83.         removable,
  84.         dontForceRestart,
  85.         0,
  86.         0,
  87.         "Folder Merge with Custom Icon",
  88.         {    
  89.         'infm', 3000;
  90.         },
  91.     }
  92. };
  93.  
  94.  
  95. // • folder merge atoms
  96.  
  97. // folder atom that installs all files within source folder
  98. // to ":Folder Merge Example:" folder on target volume
  99. resource 'infm' (1000) {
  100.     format0{
  101.         0,                            // folder size
  102.         10001,                        // target spec
  103.         10000,                         // source spec
  104.         "Example File • folder1"            // description
  105.     };
  106. };
  107.  
  108.  
  109. // folder atom that installs all files within source folder
  110. // to user selected folder on target volume
  111. resource 'infm' (2000) {
  112.     format0{
  113.         0,                            // folder size
  114.         20001,                        // target spec
  115.         20000,                         // source spec 
  116.         "Example File • folder2"            // description
  117.     };
  118. };
  119.  
  120.  
  121.  
  122. //  folder atom that installs all files within source folder
  123. //  to ":Folder Custom Icon Example:" folder on target volume
  124. //  NOTE:  Though the custom icon is an invisible file, it is
  125. //  still copied to the target folder.
  126. //
  127.  
  128. resource 'infm' (3000) {
  129.     format0{
  130.         0,                            // folder size
  131.         30001,                        // target spec
  132.         30000,                         // source spec 
  133.         "Example File • folder3"        // description
  134.     };
  135. };
  136.  
  137.  
  138. // • source and target specs
  139.  
  140. // target file spec for folder merge atom
  141. resource 'intf' (10001) {
  142.     format1 {
  143.         noSearchForFile,                 // use default search path
  144.         0,                                 // ignored in folder merge atoms
  145.         0,                                 // ignored in folder merge atoms
  146.         0,                                 // ignored in folder merge atoms
  147.         0,                                 // ignored in folder merge atoms
  148.         0,                                  // ignored in folder merge atoms
  149.         0,                                  // ignored in folder merge atoms
  150.         0,                                 // search proc ID ( 'insp' ), none used
  151.         ":FolderMerge Example:"            // path to target folder
  152.         }
  153.     };
  154.  
  155. // source file spec for folder merge atom
  156. resource 'infs' (10000) {
  157.     '',                            // ignored in folder merge atoms
  158.     '',                            // ignored in folder merge atoms
  159.     0x1,                        // ignored in folder merge atoms
  160.     noSearchForFile,            // ignored in folder merge atoms
  161.     TypeCrMustMatch,            // ignored in folder merge atoms
  162.     "Disk 1:folder1:"            // path to source folder            
  163. };
  164.  
  165. // target file spec for folder merge atom
  166. resource 'intf' (20001) {
  167.     format1 {
  168.         noSearchForFile,                 // use default search path
  169.         0,                                 // ignored in folder merge atoms
  170.         0,                                 // ignored in folder merge atoms
  171.         0,                                 // ignored in folder merge atoms
  172.         0,                                 // ignored in folder merge atoms
  173.         0,                                  // ignored in folder merge atoms
  174.         0,                                  // ignored in folder merge atoms
  175.         0,                                 // search proc ID ( 'insp' ), none used
  176.         "folder-user:"                    // path to target folder
  177.         }
  178.     };
  179.  
  180. // source file spec for folder merge atom
  181. resource 'infs' (20000) {
  182.     '',                            // ignored in folder merge atoms
  183.     '',                            // ignored in folder merge atoms
  184.     0x1,                        // ignored in folder merge atoms
  185.     noSearchForFile,            // ignored in folder merge atoms
  186.     TypeCrMustMatch,            // ignored in folder merge atoms
  187.     "Disk 1:folder2:"            // path to source folder            
  188. };
  189.  
  190. // target file spec for folder merge atom
  191. resource 'intf' (30001) {
  192.     format1 {
  193.         noSearchForFile,                 // use default search path
  194.         0,                                 // ignored in folder merge atoms
  195.         0,                                 // ignored in folder merge atoms
  196.         0,                                 // ignored in folder merge atoms
  197.         0,                                 // ignored in folder merge atoms
  198.         0,                                  // ignored in folder merge atoms
  199.         0,                                  // ignored in folder merge atoms
  200.         0,                                 // search proc ID ( 'insp' ), none used
  201.         ":Folder Custom Icon Example:"    // path to target folder        
  202.         }
  203.     };
  204.  
  205.  
  206. // source file spec for folder merge atom
  207. resource 'infs' (30000) {
  208.     '',                            // ignored in folder merge atoms
  209.     '',                            // ignored in folder merge atoms
  210.     0x1,                        // ignored in folder merge atoms
  211.     noSearchForFile,            // ignored in folder merge atoms
  212.     TypeCrMustMatch,            // ignored in folder merge atoms
  213.     "Disk 1:folder3:"            // path to source folder            
  214. };
  215.  
  216.  
  217.  
  218. resource 'inpr' ( 300 ) {
  219.     format0{
  220.         useFolderTargetMode,            // • allow user to select target folder
  221.                                         //   instead of only choosing target volume
  222.                                         
  223.         dontAllowUserToSetSystemDisk,    // don't allow user to override default
  224.                                         // volume as destination for system files
  225.                                         
  226.         showSelectedSizeInCustom,        // show user how much disk space will be
  227.                                         // required for installation of selected files
  228.                                         
  229.         noSetupFUnctionSupplied,        // not using a setup function code resource
  230.         
  231.         allowCleanInstall,                // if user pressed CTRL/SHFT/K then a copy of
  232.                                         // System Folder will be created and System files
  233.                                         // will always be installed to a new folder
  234.                                         
  235.         dontAllowServerAsTarget,        // don't allow user to install to 
  236.                                         // an Apple Share volume or server
  237.     
  238.         '',                                // setup function type ( none supplied )
  239.         0,                                // setup function code rsrc ID ( none supplied )
  240.         {
  241.             
  242.             // help page #1
  243.             301,                    // B/W • resource ID of 'PICT' item
  244.             311,                    // B/W • resource ID of 'TEXT' item
  245.             301,                    // 8-Bit Color • resource ID of 'PICT' item
  246.             311,                    // 8-Bit Color • resource ID of 'PICT' item
  247.             
  248.             // help page #2
  249.             302,                    // B/W • resource ID of 'PICT' item
  250.             312,                    // B/W • resource ID of 'TEXT' item
  251.             302,                    // 8-Bit Color • resource ID of 'PICT' item
  252.             312,                    // 8-Bit Color • resource ID of 'PICT' item
  253.             
  254.         },
  255.         "Sample Folder"
  256.     }
  257.  
  258. };
  259.  
  260.  
  261.  
  262.